﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

namespace FrbaCommerce
{
    public class Cliente
    {
        public int id { get; set; }
        public int id_user { get; set; } 
        public string Apellido { get; set; }
        public string Nombre { get; set; }
        public int Documento { get; set; }
        public int tipo_doc { get; set; }
        public DateTime FechaNacimiento { get; set; }
        public string Mail { get; set; }
        public Direccion dir;
        public Telefono tel;
        public bool Habilitado { get; set; }

        public void Guardar(Cliente cliente)
        {
            string query;
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            FuncionesComunes utils = new FuncionesComunes();
            query = "INSERT INTO ASDF.Cliente (usuario, apellido, nombre, documento_numero, documento_tipo, fecha_nacimiento, mail, direccion, telefono) VALUES ";
            query += "( " + cliente.id_user.ToString() + " , '" + cliente.Apellido + "','" + cliente.Nombre + "'," + cliente.Documento + " , " + cliente.tipo_doc + " ,'" + utils.getFormatoFecha(cliente.FechaNacimiento) +"'";
            query += " , '" + cliente.Mail + "' ," + cliente.dir.id + ", " + cliente.tel.id + " )";
            try 
            {
                datos = conexion.ejecutarConsulta(query);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problema de conexión con la BD: " + ex.Message);
            }
                       
        }

        public void Modificar(Cliente cliente) {
        
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            FuncionesComunes utils = new FuncionesComunes();
            string query = " UPDATE ASDF.Cliente SET ";
            query += " usuario = '" + cliente.id_user + "', apellido= '" + (cliente.Apellido) + "' , nombre = '" + cliente.Nombre + "', documento_numero = " + cliente.Documento + " , ";
            query += " documento_tipo = " + cliente.tipo_doc + ", fecha_nacimiento = '" + utils.getFormatoFecha(cliente.FechaNacimiento) + "' , mail = '" + cliente.Mail + "',";
            query += " direccion = " + cliente.dir.id + ", telefono = " + cliente.tel.id + ", habilitado = " + Convert.ToInt16(cliente.Habilitado) + " WHERE id = " + cliente.id + " ";
            conexion.ejecutarConsulta(query);         
        }

        public void Baja(Cliente cliente)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " UPDATE ASDF.Cliente SET ";
            query += " habilitado = " + Convert.ToInt16(cliente.Habilitado) + " ";
            query += "WHERE id = " + cliente.id + " ";
            conexion.ejecutarConsulta(query);         
        }

        public bool VerificarDocumento(int documento)
        { 
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT COUNT(*) FROM ASDF.Cliente WHERE documento_numero = " + documento + " ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            if (Convert.ToInt16(fila.ItemArray[0].ToString()) == 0)

                return true;
            else
                return false;        
        }

        public Cliente BuscarCliente(int id) 
        {
            Cliente cliente = new Cliente();
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT * FROM ASDF.Cliente WHERE id = " + id.ToString() + " ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            cliente = cliente.cargarCliente(fila);
            return cliente;
        }
        
        private Cliente cargarCliente(DataRow fila) {

            Cliente cliente = new Cliente();
            cliente.id = Convert.ToInt16(fila.ItemArray[0].ToString());
            cliente.id_user = Convert.ToInt16(fila.ItemArray[1].ToString());
            cliente.Apellido = fila.ItemArray[2].ToString();
            cliente.Nombre = fila.ItemArray[3].ToString();
            cliente.Documento = Convert.ToInt32(fila.ItemArray[4].ToString());
            cliente.tipo_doc = Convert.ToInt32(fila.ItemArray[5].ToString());
            cliente.FechaNacimiento = Convert.ToDateTime(fila.ItemArray[6].ToString());
            cliente.Mail = fila.ItemArray[7].ToString();
            cliente.dir = new Direccion();
            cliente.dir.id = Convert.ToInt16(fila.ItemArray[8].ToString());
            cliente.dir = cliente.dir.buscarDireccion(cliente.dir.id);            
            cliente.tel = new Telefono();
            cliente.tel.id = fila.ItemArray[9].ToString();
            if (cliente.tel.id != "")
            {
                cliente.tel = cliente.tel.buscarPorId(cliente.tel.id);
            }
            else
            {
                cliente.tel.numero = "";
                cliente.tel.cod_area = "";
                cliente.tel.cod_pais = "";
            }            
            cliente.Habilitado = Convert.ToBoolean(fila.ItemArray[10].ToString());
            return cliente;        
        }        

    }

}
